package net.hn.hnms.biz.plan.group.service;

import net.hn.hnms.biz.plan.domain.TreeStringEntity;
import net.hn.hnms.biz.plan.request.SaleAnalyseReq;
import net.hn.hnms.biz.plan.vo.*;
import net.hn.hnms.biz.plan.vo.*;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface GroupStatisticService {
    List<PlanStatisticVO> outputCountmonthAndYear(Integer year, String mineCode);
    List<PlanStatisticVO> monthoutput(Integer month);
    List<PlanStatisticVO> yearoutput();

    Map<String,PlanStatisticVO> planComplete(Integer month, String companyCode);

    FootAgeVo peelCount(Integer month, String companyCode);

    MonthValue annualSituation(String companyCode);
    List<MiningContinuationVo> faceCondition(String companyCode, String mineCode, Integer type);
    List<DimMiningFaceVO> faceConditionContinuation(String companyCode, String mineCode, Integer type);

    MonthYieldVo outputStatistic(Integer month, String companyCode);
    List<MonthYieldVo>  outputStatisticDetail(Integer month, String companyCode);

    List<TreeStringEntity<MonthYieldVo>>  outputStatisticConverge(Integer month, String companyCode);

    List<PlanStatisticVO>  outputStatisticDetailed(Integer month,Integer type, String companyCode);


    Map<String, BigDecimal[]>  getProduction(Integer type,Integer level, String companyCode);


    List<MonthOuputVO>  getTrendProduction(Integer type,Integer level, String companyCode);


    List<MonthOuputVO>  getOutputYoy(Integer type,String companyCode);
    List<MonthOuputVO>  getSaleYoyandQoq(Integer type,String companyCode);

    List<CoalMiningTotalVo>  getOutputSaleYoyandQoq(Integer type,String mineCode);

    List<MonthOuputVO>  getMonthlyTrendOfExcavation( String mineCode,String type);
    List<Map<String, String>>  getMonthlySelect( String type);

    Map<String, String> getMineCode(String companyCode);

    List<SaleAnalyseVo> compareYearMonthPlanActual(String type);
    List<MonthYieldVo> getDrivingStrippingStatus(String type);
    List<MonthYieldVo> getOutputStatus();

    List<PlanStatisticVO>  outputStatisticSituation(Integer type, String code);

    List<PlanStatisticVO>  laseDayOutputAndPlanStatisticSituation(Integer type, String code);

    SaleAnalyseVo saleAnalyse(SaleAnalyseReq req);

    List<SaleAnalyseVo> saleAnalyseSubmenu(SaleAnalyseReq req);

    Map<String, String[]> productionAndMarketingCount(String companyCode);
    List<ProductionAndMarketingVo> productionAndMarketingCountSubmenu(SaleAnalyseReq req);



    OpencastAndUndergroundMiningVo opencastAndUndergroundMiningCount(String companyCode, String type);

    List<OpencastAndUndergroundMiningVo> opencastAndUndergroundMiningCountSubmenu(String companyCode, String type);

    Map<String,Object> getFillingAnalysis(String dateStr,String type,int pageNum,int pageSize,String companyCode);

    List<CompanyYearTotalYieldVo> companyYearTotalYield();

    List<MineNumberVo> getMineNumberStatus(String companyCode);


    MineNumberVo getMineNumber(String companyCode);

}
